package org.scboy.rbac.service;

import java.util.List;

import org.scboy.utils.entitys.coobi.Model;
import org.scboy.utils.entitys.coobi.Page;

/**
 * 
 *  菜单相关业务类功能。
 * @author yanghao
 *
 */
public interface MenuService {
	
	/**
	 * 分页查询菜单（查询参数Model，分页参数Limit）。
	 * @param model
	 * @return
	 */
	Page page(Model model);
	
	/**
	 * 新增菜单（菜单Model）。加入事务注解@Transactional。
	 * @param model
	 * @return
	 */
	boolean add(Model model);
	
	/**
	 * 删除菜单（菜单ID）。加入事务注解@Transactional。
	 * @param id
	 * @return
	 */
	boolean delete(String id);
	
	/**
	 * 更新菜单（菜单Model）。加入事务注解@Transactional。
	 * @param model
	 * @return
	 */
	boolean update(Model model);
	
	/**
	 * 启用禁用菜单（菜单ID）。
	 * @param id
	 * @return
	 */
	boolean checkState(String id);
	
	/**
	 * 排序升降序。
	 * @param id
	 * @param type 0升序，1降序。
	 * @return
	 */
	boolean sort(String id,int type);
	
	/**
	 * 根据菜单ID获取菜单信息（菜单ID）。
	 * @param id
	 * @return
	 */
	Model get(String id);
	
	/**
	 * 根据父节点，获取子菜单。
	 * @param parentId
	 * @return
	 */
	List<Model> list(String parentId,String sysId);
	
	/**
	 * 根据系统ID，获取系统所有菜单。
	 * @param parentId
	 * @return
	 */
	List<Model> listAll(String sysId);
	
	
	/**
	 * 加载所有系统和菜单的树形结构数据
	 * @return
	 */
	List<Model> tree();
	

	/**
	 * 懒加载菜单树
	 * @return
	 */
	List<Model> childs(String sysId,String parentId);
}
